package com.zhijian.medical.entity.vo.response;

import com.zhijian.medical.enums.AssessmentStatusEnum;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.util.List;
import java.util.Objects;

/**
 * 考核主表 回显vo
 *
 * @author HCG
 * @version 1.0
 * @date 2023-01-17 16:55:26
 */
@Getter
@Api(tags = "考核主表回显vo")
@NoArgsConstructor
@AllArgsConstructor
public class AssessmentVo extends AssessmentDetailVo implements Serializable {

    private static final long serialVersionUID = -1;

    /**
     * 名称
     */
    @ApiModelProperty("名称")
    private String name;

    /**
     * 开始时间
     */
    @ApiModelProperty("开始时间")
    private String startTime;

    /**
     * 结束时间
     */
    @ApiModelProperty("结束时间")
    private String endTime;

    /**
     * 考生id集合字符串
     */
    @ApiModelProperty(value = "考生id集合字符串", hidden = true)
    private String doPersonIdsStr;

    /**
     * 阅卷人id集合字符串
     */
    @ApiModelProperty(value = "阅卷人id集合字符串", hidden = true)
    private String reviewerIdsStr;

    /**
     * 考生id集合
     */
    @ApiModelProperty("考生id集合")
    private List<Long> doPersonIds;

    /**
     * 阅卷人id集合
     */
    @ApiModelProperty("阅卷人id集合")
    private List<Long> reviewerIds;

    /**
     * 类型，0：题库（试卷），1：数字切片
     */
    @ApiModelProperty("类型，0：题库（试卷），1：数字切片")
    private Byte type;

    /**
     * 切片类型
     */
    @ApiModelProperty(value = "切片类型", hidden = true)
    private String digitalSliceCaseType;

    /**
     * 切片类型数组
     */
    @ApiModelProperty("切片类型数组")
    private List<String> digitalSliceCaseTypeList;

    /**
     * 题库id
     */
    @ApiModelProperty("题库id")
    private Long examWarehouseId;

    /**
     * 状态，0：未开始，1：进行中，2：已结束
     */
    @ApiModelProperty("状态，0：未开始，1：进行中，2：已结束")
    private Byte status;

    /**
     * 状态字符串
     */
    @ApiModelProperty("状态字符串")
    private String statusStr;

    /**
     * 合格线
     */
    @ApiModelProperty("合格线")
    private Integer acceptanceLine;

    /**
     * 创建人id
     */
    @ApiModelProperty("创建人id")
    private Long createUserId;

    /**
     * 创建人姓名
     */
    @ApiModelProperty("创建人姓名")
    private String createUserName;

    /**
     * 创建时间
     */
    @ApiModelProperty("创建时间")
    private String createTime;

    /**
     * 切片类型数组
     */
    @ApiModelProperty("切片类型数组")
    private List<Long> studyId;

    /**
     * 相关资料
     */
    @ApiModelProperty("相关资料")
    private String relationStudyNames;

    /**
     * 人员类型，0：在职员工，1：规培生，2：进修生，3：研究生
     */
    @ApiModelProperty("人员类型，0：在职员工，1：规培生，2：进修生，3：研究生")
    private Byte userType;

    /**
     * 二维码地址，目前只有专项培训人员有
     */
    @ApiModelProperty("二维码地址，目前只有专项培训人员有")
    private String qrFilePath;

    /**
     * 学习班ID
     */
    @ApiModelProperty("学习班ID")
    private Long studyClassId;

    /**
     * 切片库标签id数组
     */
    @ApiModelProperty("切片库标签id数组")
    private List<Long> groupIdList;

    /**
     * 切片库标签id数组字符串
     */
    @ApiModelProperty("切片库标签id数组字符串")
    private String groupIds;

    public void setGroupIds(String groupIds) {
        this.groupIds = groupIds;
    }

    public void setGroupIdList(List<Long> groupIdList) {
        this.groupIdList = groupIdList;
    }

    public void setStudyClassId(Long studyClassId) {
        this.studyClassId = studyClassId;
    }

    public void setQrFilePath(String qrFilePath) {
        this.qrFilePath = qrFilePath;
    }

    public void setUserType(Byte userType) {
        this.userType = userType;
    }

    public void setRelationStudyNames(String relationStudyNames) {
        this.relationStudyNames = relationStudyNames;
    }

    public void setStudyId(List<Long> studyId) {
        this.studyId = studyId;
    }

    public void setCreateUserName(String createUserName) {
        this.createUserName = createUserName;
    }

    public void setDoPersonIdsStr(String doPersonIdsStr) {
        this.doPersonIdsStr = doPersonIdsStr;
    }

    public void setReviewerIdsStr(String reviewerIdsStr) {
        this.reviewerIdsStr = reviewerIdsStr;
    }

    public void setCreateUserId(Long createUserId) {
        this.createUserId = createUserId;
    }

    public void setDoPersonIds(List<Long> doPersonIds) {
        this.doPersonIds = doPersonIds;
    }

    public void setReviewerIds(List<Long> reviewerIds) {
        this.reviewerIds = reviewerIds;
    }

    public void setAcceptanceLine(Integer acceptanceLine) {
        this.acceptanceLine = acceptanceLine;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void setStartTime(String startTime) {
        this.startTime = startTime;
    }

    public void setEndTime(String endTime) {
        this.endTime = endTime;
    }

    public void setType(Byte type) {
        this.type = type;
    }

    public void setExamWarehouseId(Long examWarehouseId) {
        this.examWarehouseId = examWarehouseId;
    }

    public void setStatus(Byte status) {
        this.status = status;
    }

    public void setStatusStr(String statusStr) {
        if (Objects.isNull(this.status)) {
            this.statusStr = null;
            return;
        }
        AssessmentStatusEnum anEnum = AssessmentStatusEnum.getByCode(Integer.valueOf(this.status));
        this.statusStr = Objects.nonNull(anEnum) ? anEnum.getDesc() : null;
    }

    public void setCreateTime(String createTime) {
        this.createTime = createTime;
    }

    public void setDigitalSliceCaseType(String digitalSliceCaseType) {
        this.digitalSliceCaseType = digitalSliceCaseType;
    }

    public void setDigitalSliceCaseTypeList(List<String> digitalSliceCaseTypeList) {
        this.digitalSliceCaseTypeList = digitalSliceCaseTypeList;
    }
}